package com.example.easypoi.controller;

import com.example.easypoi.util.PtfUtil;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @description:
 * @author: 朱超
 * @createDate: 2023/4/4
 * @version: 1.0
 * @remark：备注
 */
public class ExportPdf {


    /**
     * 导出数据 生成pdf
     *
     * @param response
     */
    @ApiOperation(value = "导出数据 生成pdf")
    @GetMapping("/exportPdf")
    public void exportPdf(HttpServletResponse response) {
        // 模板路径
        String tempPath = "/Users/xxx/IdeaProjects/test/pdf导出模板.pdf";

        //文字类
        Map<String, String> dataMap = new HashMap<>();
        // dataMap中的key要和模板中的域名对应
        dataMap.put("userName", "测试文字内容userName");
        // dataMap中的key要和模板中的域名对应
        dataMap.put("who", "测试文字内容who");

        dataMap.put("demo1", "测试文字内容demo1");
        dataMap.put("demo2", "测试文字内容demo2");

        dataMap.put("name", "测试文字内容名字");
        dataMap.put("address", "测试文字内容地址");
        dataMap.put("main", "测试文字内容主要负责人");
        dataMap.put("mobile", "测试文字内容电话");
        dataMap.put("phone", "测试文字内容手机号");

        //图片
        String img = "/Users/xxx/Desktop/files/img/123.jpeg";
        Map<String, String> imgMap = new HashMap<>();
        // imgMap中的key要和模板中的域名对应
        imgMap.put("img", img);

        //表格 一行数据是一个list
        List<String> list = new ArrayList<>();
        list.add("标题");
        list.add("日期");
        list.add("金额");
        list.add("备注");

        List<String> list2 = new ArrayList<>();
        list2.add("标题");
        list2.add("2021-08-27");
        list2.add("100000");
        list2.add("");

        List<String> list3 = new ArrayList<>();
        list3.add("标题22");
        list3.add("2021-08-29");
        list3.add("200000");
        list3.add("备注");

        List<List<String>> List = new ArrayList<>();
        List.add(list);
        List.add(list2);
        List.add(list3);

        Map<String, List<List<String>>> listMap = new HashMap<>();
        // 这里的listMap中key要和模板中的域名对应
        listMap.put("item", List);

        Map<String, Object> o = new HashMap<>();
        o.put("tempPath", tempPath);
        o.put("dataMap", dataMap);
        o.put("imgMap", imgMap);
        o.put("tableList", listMap);
        try {
            OutputStream out = response.getOutputStream();
            response.setCharacterEncoding("utf-8");
            response.setHeader("content-type", "application/octet-stream");

            long millis = System.currentTimeMillis();
            String fileName = URLEncoder.encode("pdf模板导出" + millis + ".pdf", "UTF-8");
            response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
            try {
                PtfUtil.creatPdf(o, out);
            } catch (Exception e) {
                e.printStackTrace();
            }
            out.flush();
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}
